package com.mac.web;

import com.alibaba.fastjson.JSON;
import com.mac.pojo.Member;
import com.mac.service.MemberService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;

/**
 * 处理会员相关操作的Servlet。
 */
@WebServlet("/member/*")
public class MemberServlet extends BaseServlet {
    // 使用SLF4J记录日志
    private static final Logger LOGGER = LoggerFactory.getLogger("MemberServlet.Class");

    // 注入会员服务类，用于与会员数据交互
    MemberService memberService = new MemberService();

    /**
     * 获取所有会员信息并发送到前端的方法。
     * @param request 请求对象，包含请求信息。
     * @param response 响应对象，用于返回响应数据。
     * @throws ServletException 如果发生Servlet异常。
     * @throws IOException 如果发生I/O异常。
     */
    public void selectAllMembers(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 初始化会员列表，用于存储所有会员数据
        ArrayList<Member> members = null;
        try {
            // 调用会员服务方法，获取所有会员信息
            members = memberService.selectAllMember();
            LOGGER.info("memberService.selectAllMember() -> success");
        } catch (Exception e) {
            // 记录错误日志，并写入错误信息到响应中
            LOGGER.error("memberService.selectAllMember() -> fail", e);
            response.getWriter().write("readMbError");
        }

        // 将会员列表转换为JSON格式
        String jsonString = JSON.toJSONString(members);

        // 设置响应内容类型，并写入JSON字符串到响应中
        response.setContentType("text/json;charset=utf-8");
        response.getWriter().write(jsonString);
    }
}